﻿using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Runtime.Serialization;
using MedicalAdviser.DataTypes.WsTypes;

namespace MedicalAdviser.DataTypes.DomainObjects
{
      [DataContract]
    public enum TypeSelection
    {
          [EnumMember]
          Nothing = 0,
        [EnumMember]
        NormalList = 1,
        [EnumMember]
        NormalButAvailableLowCost = 2,
        [EnumMember]
        Similiar = 3,
        [EnumMember]
        SimiliarNotLowCost = 4
    }

      [DataContract]
    public  enum  TipoMedicamento
    {
          [EnumMember]
        OutrosProudutos,
          [EnumMember]
          Medicamentos,
          [EnumMember]
          MedicamentoEstupefacientes,
          [EnumMember]
          ProdutosAutoControlDiabetes,
          [EnumMember]
          MedicamentosManipulados,
          [EnumMember]
          ProdutosDiateticos
    }

    /**
     *  
     * Def: Pag. 11 ET_ACSS_03_2011
     * 
     */
     [DataContract]
    public class CdoDrug
    {
         /**/
        [DataMember]
        public Auth Security { get; set; }
        [DataMember]
        public int NumberOfUsersRecomendations { get; set; }
        [DataMember]
        public short RecommendByUser { get; set; }
        [DataMember]
        public int ViewCount { get; set; }

        //Codigo interno do medicamento
        [DataMember]
        public String CustomField { get; set; }
        [DataMember]
        public int CodMedicamento { get; set; }
        [DataMember]
        public int CodEmbalagem { get; set; }
        [DataMember]
        public String CodGrupoHomogeneo { get; set; }

        [DataMember]public int TipoProduto { get; set; }
        [DataMember]public int TipoTratamento { get; set; }
        [DataMember]public int ClassDispensa { get; set; }
        [DataMember]public int ClassEstupefacientes { get; set; }

          //[DataMember]public String Tratamento { get; set; }
          //[DataMember]public String TipoReceita { get; set; }
          //[DataMember]public String CodTipoReceita { get; set; }
          //[DataMember]public String CodTipoTratamento { get; set; }

        //Propriadades para usar na  receita
          [DataMember]public int NumeroCaixas { get; set; }

          [DataMember]public String Posologia    { get; set; }


        //Preco unitário
         [DataMember]
        public double Pmu { get; set; }
        //Nome Comercial
         [DataMember]
        public String BusinessName { get; set; }
        //Titular IAM
         [DataMember]
        public String TitularAim { get; set; }
        //Denomincação comum internacional
         [DataMember]
        public String Dci { get; set; }
        //Dosagem
        [DataMember]public String Dosage { get; set; }
        ////Codigo de Forma Farmaceutica
          [DataMember]public int CodPharmaceuticalForm { get; set; }
          //Forma Farmaceutica
          [DataMember]  public String PharmaceuticalForm { get; set; }
        //Dimensao Embalagem
          [DataMember]
          public String PackingDimension { get; set; }
          [DataMember]
          public String PackgeDescricao { get; set; }
        //È Generico
          [DataMember]
          public String IsGeneric { get; set; }
        //Preço de venda ao publico
          [DataMember]
          public Double Pvp { get; set; }
        //Taxa de comparticipação
        //  [DataMember]
        //  public Double ReimbursementTax { get; set; }
        ////Valor a pagar pelo utente
        //  [DataMember]
        //  public Double AmoutPayEndUser { get; set; }
        ////Valor a pagar pelo utente
        //  [DataMember]
        //  public Double AmoutPayEndUserEspecial { get; set; }
        ////Valor a comparticipar pelo SNS
        //  [DataMember]
        //  public Double AmoutReimbursementSns { get; set; }


        //Medicamentos mais barato campos
          //[DataMember]
          //public TypeSelection TipoSelecao { get; set; }  
          //[DataMember]
          //public List<CdoDrug> LowCost { get; set; }
        //  [DataMember]
        //  public double DiferencaSns { get; set; }
        //  [DataMember]
        //  public double DiferencaUtente { get; set; }
          [DataMember]
          public String Diploma { get; set; }

        //  [DataMember]
        //  public SqlString NumbEmbalagem { get; set; }

        //[DataMember]
        //public SqlString ArrayCodMedicamentos { get; set; }


        /* 
         * 29-02-2012
         * 
        // * Indicados com a versão 3.6 da bd infarmed */
         [DataMember]
         public SqlBoolean IsEmbalagemUnitaria { get; set; }
        //[DataMember]
        //public SqlString CodGrupoProducto { get; set; }
        //[DataMember]
        //public SqlBoolean MedicamentoReceitaRenovavel { get; set; }
         [DataMember] public bool IsVendaLivre { get; set; }

        //public String ValorMedicamento
        //{
        //    get { return Pvp <= 0 ? "N.A" : Math.Round(Pvp, 2).ToString(); }
        //}
        //public String ValorPagarSns
        //{
        //    get { return AmoutReimbursementSns <= 0 ? "N.A" : Math.Round(AmoutReimbursementSns, 2).ToString(); }
        //}
        //public String ValorPagarUtente
        //{
        //    get { return AmoutPayEndUser <= 0 ? "N.A" : Math.Round(AmoutPayEndUser, 2).ToString(); }
        //}
    }


    public class CodSearchEquivalentDrug
    {
        public double Price { get; set; }
        public int CodMedicamento { get; set; }
        public int CodEmbalagem { get; set; }
        public String CodGrupoHomeogeneo { get; set; }
    }

    [DataContract]
    public class SearchDrug : InDbParameters
    {
       [DataMember] public String GenericSearch { get; set; }
       [DataMember] public String BussinessName { get; set; }
       [DataMember] public String ActiveDrug { get; set; }
       [DataMember] public String Dosage { get; set; }
       [DataMember] public String PharmaceuticForm { get; set; }

       [DataMember] public String Keyword { get; set; }

       [DataMember] public Auth ClientAuth { get; set; }

    }







}
